 
  

 






<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>

<!-- Mirrored from www.javapractices.com/topic/TopicAction.do?Id=206 by HTTrack Website Copier/3.x [XR&CO'2010], Sun, 12 Jun 2011 17:28:07 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->
<head>
 <title>
  Java Practices -> Prefer UTF-8 in all layers
 </title>
 <link rel="stylesheet" type="text/css" href="../stylesheet8.css" media="all">
 
 <link rel="shortcut icon" href='../images/favicon.ico' type="image/vnd.microsoft.icon">
 <meta name="description" content="Concise presentations of java programming practices, tasks, and conventions, amply illustrated with syntax highlighted code examples.">
 
 <meta name='keywords' content='java,java programming,java practices,java idiom,java style,java design patterns,java coding conventions,'>
 
 
</head>
 
<body>


<div class='menu-bar'>
 
  <a href='../home/HomeAction.html' title='Table of Contents'>Home</a> |
  <a href='../vote/VoteSummaryAction-2.html' title='View Poll Results'>Poll</a> |
   
  <A href='../feedback/FeedbackAction451f-2.html?Operation=Show' title='Send Your Feedback'>Wiki</a> |
  <b><a href='../source/SourceAction-2.html' title='Grab Source Code'>Source Code</a></b><IMG class='no-margin' SRC="../images/goldstar.gif" ALT=""> |

  <a href='http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp?From=1' title='Free Download - Java Web Application Framework'><b>WEB4J</b></a> |
  
  <a href='http://www.date4j.net/' title='Replacement for java.util.Date'><b>DATE4J</b></a> |

   <a href='../references/ReferencesAction-2.html' title='References'>Links</a>
   
  <form action='http://www.javapractices.com/search/SearchAction.do' method='get' class='search-form'>
   <input type='text' name='SearchTerms' value="" size=12 maxlength=50 class='search'>
   <input type='submit' value="Search">
  </form>
 
</div>

<P>



  

 






<p class="display-messages">

 

 

</p>


<div class="main-layout">
 
   

 




<div class='page-title'>Prefer UTF-8 in all layers</div>

<div class='main-body'>
 
<br>If an application displays text with strange, unexpected characters,
the likely cause is an incorrect character encoding.
<p>Character encodings control how tools translate raw bytes into text.
The best default character encoding is likely UTF-8. It can represent characters
in almost all languages, and in an efficient manner. So, it seems to make
sense to adopt UTF-8 as an excellent default character encoding.
<p>Simple ASCII encoding should usually be avoided, since it is so inflexible.
As well, the default encoding used by the Servlet specification is ISO-8859-1,
which is restricted to West European languages.
<p>In a web application, character encodings are used in three separate
areas - the browser, the server, and the database. To work together correctly,
the same character encoding must be used in each of these areas (see this
<a href="http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/index.html">excellent
article</a> for further discussion).
<p><b>Browser</b>
<br>The browser uses an encoding to present text, and to send request parameters
to the server. The request parameter encoding will be the same as the page
encoding, unless instructed otherwise. A JSP can instruct the browser on
the desired encoding by using a <tt>page</tt> directive, such as :
<p><tt>&lt;%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
%></tt>
<p>META tags may be used instead :
<p><tt>&lt;meta http-equiv="Content-Type"&nbsp; content="text/html; charset=UTF-8"
></tt>
<p>As usual, such a policy should be defined in one place, if possible
(for example, in a template page).
<p><b>Server</b>
<br>In principle, the browser should respond to the server by including
the character encoding it has already received from the server. In practice,
however, browsers do not do a very good job at this. So, even though a
JSP has indicated the character encoding, it is likely a good practice
to "reset" the character encoding of the request, using, for example :
<p><tt>request.setCharacterEncoding("UTF-8");</tt>
<p>A&nbsp;<tt>Controller</tt> could perform this for every incoming request,
perhaps using a value configured in&nbsp;<tt>web.xml</tt>. This method
must be called early in processing, before any parameter values are retrieved.
<p>For reference, the servlet API has these methods for managing character
encoding :
<ul>
<li>
<tt>ServletRequest.<a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletRequest.html#getCharacterEncoding()">getCharacterEncoding</a></tt></li>

<li>
<tt>ServletRequest.<a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletRequest.html#setCharacterEncoding(java.lang.String)">setCharacterEncoding</a></tt></li>

<li>
<tt>ServletResponse.<a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletResponse.html#setLocale(java.util.Locale)">setLocale</a></tt></li>

<li>
<tt>ServletResponse.<a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletResponse.html#setContentType(java.lang.String)">setContentType</a></tt></li>
</ul>
<b>Database</b>
<br>The database has a character encoding as well. Please consult your
database documentation for further information.
<br>
<br>

</div>





<div class='topic-section'>Would you use this technique?</div>
<div class='main-body'>
  
  <form action="http://www.javapractices.com/vote/AddVoteAction.do" method='post'>
    Yes<input type='radio' name='Choice' value='Y' >
    &nbsp;&nbsp;No<input type='radio' name='Choice' value='N'>
    &nbsp;&nbsp;Undecided<input type='radio' name='Choice' value="?" >
    &nbsp;&nbsp;<input type=submit value="Vote" >
    <input type='hidden' name='Operation' value='Apply'>
    <input type='hidden' name='TopicId' value='206'>
  </form>
</div>

<div style='height:10.0em;'></div>

 
 
</div>

  

 





<div align='center' class='legalese'>  
&copy; 2011 Hirondelle Systems |
<a href='../source/SourceAction-2.html'><b>Source Code</b></a><IMG class='no-margin' SRC="../images/goldstar.gif" ALT=""> |
<a href="mailto:webmaster@javapractices.com">Contact</a> |
<a href="http://creativecommons.org/licenses/by-nc-sa/1.0/">License</a> |
<a href='../apps/cjp.rss'>RSS</a>
<!-- ukey="2AC36CD2" -->
<!-- ckey="16DF3D87" -->
<br>

 Individual code snippets can be used under this <a href='../LICENSE.txt'>BSD license</a> - Last updated on June 6, 2010.<br>
 Over 150,000 unique IPs last month - <span title='Java Practices 2.6.5, Mon May 16 00:00:00 EDT 2011'>Built with</span> <a href='http://www.web4j.com/'>WEB4J</a>.<br>
 - In Memoriam : Bill Dirani -
</div>

<script src="../../www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2633428-1";
urchinTracker();
</script>



</body>

<!-- Mirrored from www.javapractices.com/topic/TopicAction.do?Id=206 by HTTrack Website Copier/3.x [XR&CO'2010], Sun, 12 Jun 2011 17:28:07 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->
</html>
